﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;

namespace AlgorithmTest
{
    // T_[四个数字排序]_[算法名]
    public class T_0196_NummSpecial : IAlgorithm
    {
        // 1582. 二进制矩阵中的特殊位置

        /*
        给你一个大小为 rows x cols 的矩阵 mat，其中 mat[i][j] 是 0 或 1，请返回 矩阵 mat 中特殊位置的数目 。
        特殊位置 定义：如果 mat[i][j] == 1 并且第 i 行和第 j 列中的所有其他元素均为 0（行和列的下标均 从 0 开始 ），则位置 (i, j) 被称为特殊位置。

        提示：
            rows == mat.length
            cols == mat[i].length
            1 <= rows, cols <= 100
            mat[i][j] 是 0 或 1
         */

        public void Test()
        {
            // 算法参数定义

            // 算法执行与打印
            //Console.WriteLine(Algorithm());
            //var res = Algorithm(param);
            //foreach (var item in res)
            //{
            //    foreach (var iitem in item)
            //    {
            //        Console.Write(iitem + " ");
            //    }
            //    Console.WriteLine();
            //}
        }

        // 算法
        public int NumSpecial(int[][] mat)
        {
            int m = mat.Length, n = mat[0].Length;
            for (int i = 0; i < m; i++)
            {
                int cnt1 = 0;
                for (int j = 0; j < n; j++)
                {
                    if (mat[i][j] == 1)
                    {
                        cnt1++;
                    }
                }
                if (i == 0)
                {
                    cnt1--;
                }
                if (cnt1 > 0)
                {
                    for (int j = 0; j < n; j++)
                    {
                        if (mat[i][j] == 1)
                        {
                            mat[0][j] += cnt1;
                        }
                    }
                }
            }
            int sum = 0;
            foreach (int num in mat[0])
            {
                if (num == 1)
                {
                    sum++;
                }
            }
            return sum;
        }
    }
}
